package org.infodavid.common.notifier;

import java.util.Set;

import org.infodavid.common.scheduler.commands.IScheduledCommand;

/**
 * The Interface INotifierCommand.
 */
public interface INotifierCommand extends IScheduledCommand {

	/**
	 * Checks if is immediate.
	 * @return true, if is immediate
	 */
	boolean isImmediate();

	/**
	 * Sets the immediate.
	 * @param flag the new immediate
	 */
	void setImmediate(boolean flag);

	/**
	 * Gets the anti spam options.
	 * @return the anti spam options
	 */
	IAntiSpamOptions getAntiSpamOptions();

	/**
	 * Gets the from.
	 * @return the from
	 */
	String getFrom();

	/**
	 * Sets the from.
	 * @param value the new from
	 */
	void setFrom(String value);

	/**
	 * Gets the subject.
	 * @return the subject
	 */
	String getSubject();

	/**
	 * Sets the subject.
	 * @param value the new subject
	 */
	void setSubject(String value);

	/**
	 * Gets the to.
	 * @return the to
	 */
	Set<String> getTo();

	/**
	 * Sets the to.
	 * @param values the new to
	 */
	void setTo(String... values);

	/**
	 * Sets the data.
	 * @param value the new data
	 */
	void addData(byte[] value);

	/**
	 * Gets the key.
	 * @return the key
	 */
	String getKey();

	/**
	 * Sets the key.
	 * @param value the new key
	 */
	void setKey(String value);
}
